iT邦幫忙

2024 iThome 鐵人賽

DAY 30
0
Software Development

Datomic,內建事件溯源的資料庫。系列 第 30

Datomic 的商業價值:新的資料庫典範

  • 分享至 

  • xImage
  •  

參考這張圖,我們從三個不同的面向切入來探討 Datomc 帶來的價值。

事件溯源

Datomic 的事件溯源模型讓每次的交易 (transaction) 都被視為不可變的事件 (immutable event),這為多項商業應用的帶來巨大價值。

可逆交易

在傳資料庫中,對資料的變更通常是不可逆的,一旦執行了某個更新操作,舊的資料就會被覆蓋。然而,在 Datomic 的模型裡,每次交易只是增加一些新的事件,所以可以允許對過去資料庫的狀態進行回溯和恢復,這意味著任何機器錯誤或是人為錯誤都能夠得到快速修正。這樣的可逆性在製造、金融等強調高可靠性的產業中具有深遠意義。

可稽核的交易 (auditable transaction)

Datomic 提供對交易的查詢功能,這讓每一筆交易都可以輕易地做稽核 (audit)。這種功能除了對於合法合規有用之外,還能幫助企業分析過去的資料變動,以識別潛在的問題與趨勢。例如,金融業可以通過稽核追蹤一筆交易影響到的資料實體,並對其做遞迴查詢找出所有的相關的資料實體,以有效地比對金融詐欺模式 (fraud pattern)。

時間旅行查詢 (time travel query)

Datomic 的時間旅行查詢功能使得企業可以回溯到任意時間點,進行 as-of 查詢,以查看任一時間對應的資料庫狀態,這個功能對於新功能測試、找出複雜的臭蟲又或是產品生命周期管理都極有幫助。

極富表現力的查詢語言

Datalog 提供了與 SQL 至少等價的查詢能力,這在 Day 6~ Day 19 已經有充分地論述。不只如此,Datalog 比 SQL 更加直觀的語法,對於企業的生產力提昇有很大的潛力。

規則與遞迴查詢

Datalog 由於有規則 (rules) 與遞迴查詢的功能,當資料本身有階層關系 (hierarchical relaship) 時,比方說:硬體產品零件樹、社交網路等,Datalog 可以輕易地表現曲折的走訪語意,在階層資料之間自由地來去,讓企業能夠快速挖掘出關鍵洞察。

自然語言到 Datalog 的轉換

『將非技術人員的自然語言查詢轉換為 SQL 查詢』的技術,可以讓不同層級的員工都能通過簡單的對話,從資料庫獲得答案,對於企業的決策與生產力極有意義。近年來,隨著大規模語言模型(LLM)的發展,轉換的準確度也得到了大幅進展。即使如此,上述轉換在品質上仍有相當大的進步空間。

另一方面,『自然語言查詢轉換為 Datalog 查詢』,由於 Datalog 本身語法相對靠近自然語言,這個轉換的難度立刻顯著地下降,已經相當接近可以大規模使用。

獨特的分散式架構

Datomic 的軟體的架構採用獨特的分散式架構,此一架構一方面保留了關鍵的資料庫交易四大特性 (ACID) 的同時,又兼備了可水平擴展的讀取 (scale out read)。此一架構帶來的影響主要有兩個層面:提昇開發人員的生產力,高可用、可水平擴展的效能特性。

無需部署的自訂查詢函數

在 Datomic 資料庫,因為讀寫完全分離,所以資料庫的查詢運作的執行環境是在後端程式裡。也因此,自訂查詢函數無需部署 (deploy) 進入資料庫就可直接運行。這種無需部署的特性簡化了查詢語言的語法設計、也加速了開發。

可抽換的鍵值存儲 (鍵值存儲效能紅利)

Datomic 可以利用現有的鍵值存儲技術 (DynamoDB、Cassandra),提供高可用性且可水平擴展的資料存儲解決方案。

此外,日後若有更加高效的鍵值存儲技術出現時,Datomic 的軟體只需做微小的修改,就可以移植過去。這一點讓 Datomic 不需要投資大量的成本於存儲技術的研發,卻依然可以享用隨技術進步的鍵值存儲效能紅利。(Clojure 語言運作於 JVM 之上,也是可以享用 JVM 進步帶來的效能紅利。)

結論

Datomic 巧妙地結合了事件溯源、極富表現力的 Datalog 查詢語言、與獨特的分散式架構,因而得到了可逆交易、可稽核的交易、時間旅行查詢、強大的階層式資料查詢、相對接近自然語言的查詢、無需部署的自訂查詢函數、長期的鍵值存儲效能紅利種種特性。綜上所述,Datomic 帶來了容錯、靈活、容易開發且可擴展的資料庫解決方案,足以作為下一代資料庫的典範。

  • 上圖是 xkcd 的經典漫畫 Lisp Cycles 的 Datalog 惡搞版。但是,要傳達的意思不變:『優雅的設計在每一個世代都有機會重新被發現…。』

其它資源

  1. 歡迎訂閱 PruningSuccess 電子報,主要談論軟體開發、資料處理、資料分析等議題。
  2. 歡迎加入 Clojure 社群

上一篇
效能改進 -- part 2
系列文
Datomic,內建事件溯源的資料庫。30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言